import { getToken, setToken, removeToken } from '@/utils/auth'
import { login, getUserPerms, getUserInfo } from '@/api/user'
// 数据持久化
export default {
  namespaced: true,
  state: {
    token: getToken(),
    userInfo: {} // 声明变量 保存用户信息
  },
  mutations: {
    token(state, token) {
      state.token = token
      // 进行数据持久化
      setToken(token)
    },
    // 保存用户信息
    SET_USERINFO(state, userInfo) {
      state.userInfo = userInfo
      console.log('保存', state.userInfo)
    },
    // 清除用户信息
    removeUserInfo(state) {
      state.userInfo = {}
    }
  },
  actions: {
    // 用户登录模块
    async getLogin(store, formLogin) {
      const res = await login(formLogin)
      console.log(res)
      store.commit('token', res.data.jwt)
    },
    // 用户退出模块
    logout(store) {
      // 清空vuex
      store.state.token = ''
      // 删除缓存token
      removeToken()
      store.commit('removeUserInfo')
    },
    async getUserInfo(store) {
      // 获取用户权限
      const res = await getUserPerms()
      console.log('权限', res)
      // 获取用户信息
      const result = await getUserInfo()
      console.log('用户信息', result)
      // 保存信息
      store.commit('SET_USERINFO', { ...res.data, ...result.data })
    }
  }
}
